package ejemplo;


import java.awt.event.KeyEvent;

import ejemplo.componentes.ComponenteColision;
import ejemplo.componentes.ComponenteManejo;
import ejemplo.componentes.ComponenteMovimiento;
import ejemplo.componentes.ComponenteMovimiento2;
import ejemplo.componentes.ComponentePosicion2D;
import ejemplo.componentes.ComponenteRender;
import ejemplo.componentes.interfaces.IColisionable;
import ejemplo.componentes.interfaces.IManejable;
import ejemplo.componentes.interfaces.IMovil;
import ejemplo.componentes.interfaces.IRenderizable;
import ejemplo.sistemas.SubsistemaColisiones;
import ejemplo.sistemas.SubsistemaManejo;
import ejemplo.sistemas.SubsistemaMovimiento;
import ejemplo.sistemas.SubsistemaRenderizado;
import ejemplo.util.IForma;
import es.SistemaEntidades;
import es.entidades.Entidad;

public class SistemaPrueba extends SistemaEntidades {
	
	private final static int ANCHO_LOSAS_MAPA = 32;
	private final static int ALTO_LOSAS_MAPA = 32;
	
	@Override
	public void inicializar() {		
		Entidad j1 = crearEntidad("jugador");
		Entidad e1 = crearEntidad("enemigo");
		Entidad e2 = crearEntidad("enemigo");
		Entidad l1 = crearEntidad("losa");
		
		ComponentePosicion2D pj1 = new ComponentePosicion2D(0, 0, j1);
		ComponentePosicion2D pe1 = new ComponentePosicion2D(150, 350, e1);
		ComponentePosicion2D pe2 = new ComponentePosicion2D(300, 250, e2);
		ComponentePosicion2D pl1 = new ComponentePosicion2D(64, 64, l1);
		
		
		
		ComponenteMovimiento mj1 = new ComponenteMovimiento(pj1, j1);
		ComponenteMovimiento2 me1 = new ComponenteMovimiento2(pe1, e1);
		
		ComponenteManejo maj1 = new ComponenteManejo(j1, mj1);
		
		ComponenteRender rj1 = new ComponenteRender(50, 50, pj1, j1);
		ComponenteRender re1 = new ComponenteRender(50, 50, pe1, e1);
		ComponenteRender re2 = new ComponenteRender(50, 50, pe2, e2);
		ComponenteRender rl1 = new ComponenteRender(ANCHO_LOSAS_MAPA, ALTO_LOSAS_MAPA, pl1, l1);
		
		ComponenteColision cl1 = new ComponenteColision(IForma.RECTANGULAR, pl1, rl1, l1);
		
		agregarComponente(pj1);
		agregarComponente(mj1);
		agregarComponente(pe1);
		agregarComponente(me1);
		agregarComponente(pe2);
		agregarComponente(rj1);
		agregarComponente(re1);
		agregarComponente(re2);
		agregarComponente(cl1);
		agregarComponente(maj1);
		
		SubsistemaMovimiento ssMovimiento = new SubsistemaMovimiento(getGestorComponentes().getComponentesTipo(IMovil.ID_INTERFAZ));
		getGestorSubsistemas().agregarSubsistema(ssMovimiento);
		
		SubsistemaRenderizado ssRenderizado = new SubsistemaRenderizado(getGestorComponentes().getComponentesTipo(IRenderizable.ID_INTERFAZ));
		getGestorSubsistemas().agregarSubsistema(ssRenderizado);
		
		SubsistemaColisiones ssColisiones = new SubsistemaColisiones(getGestorComponentes().getComponentesTipo(IColisionable.ID_INTERFAZ), "losa", 25, 50, ANCHO_LOSAS_MAPA, ALTO_LOSAS_MAPA, getGestorComponentes());
		getGestorSubsistemas().agregarSubsistema(ssColisiones);
		
		SubsistemaManejo ssManejo = new SubsistemaManejo(getGestorComponentes().getComponentesTipo(IManejable.ID_INTERFAZ),KeyEvent.VK_LEFT,KeyEvent.VK_RIGHT,KeyEvent.VK_UP,KeyEvent.VK_DOWN);
		getGestorSubsistemas().agregarSubsistema(ssManejo);
	}
	
}
